~4Dgifts/toolbox/src/exampleCode/audio/reverb README Simulated reverberation for real-time audio input and output. Written by Gints Klimanis Silicon Graphics Computer Systems 1994 reverb usage: -help -verbose -level 0..1 -noMonoProcess each input processed -reverbTime seconds -noPrime -type {comb, allpass, schroeder1, schroeder2, chamberlin, moorer, moorer2, er7, er19 moorer2er7, moorer2er19} all of the documentation contained herein is lifted directly from the reverb.c source file. The algorithms generate room ambience rather than a realistic room response. For proper operation, ensure the input and output sampling rates are equal and neither changes over time. The most advanced algorithm in this code is moorer2er19, which consumes roughly 50% of a 100 MHz R4000. For the pronounced effect, try: > reverb -type moorer2er19 -reverbTime 10 For reverberation times > 30 seconds, the decay seems to fizzle out quite abruptly. The cause is likely caused by single-precision floating point artifacts in the computation of the low-pass filter nested in each comb filter. -noMonoProcess specifies that a reverberator is computed for each input channel. Otherwise, all inputs are summed into a single reverberator. Algorithm types 'comb' and 'allpass' are processed with a feedback gain of opposite polarity in each of two output channels. -reverbTime default is 8 seconds. Applies only to comb, allpass, schroeder2, moorer, moorer2, moorer2er7, moorer2er19 algorithms. Others have decay time as specified in design. -noPrime prevents reciculated delay buffer lengths from quantization to prime value. The "priming" seems to reduce ringing due to transients such as snare drum strike and low-level whining in the presence of input noise, so this parameter is provided for comparison. -type: defaults is moorer2 comb, allpass comb and all-pass Interpolated Infinite Impulse Response (IIIR) filters. schroeder1 quint series all-pass filter schroeder2 quad parallel comb into dual series all-pass filters chamberlin quint series all-pass filter moorer Moorer's hex parallel comb filters into single all-pass filter moorer2 hex parallel filtered-comb into single all-pass filters er7, er19 early reflections patterns w/7 and 19 taps, respectively moorer2er7, moorer2er19 early reflections + hex parallel filtered-comb into single all-pass filters. Early reflections fed into comb network. Scatter in 19 tap ER pattern yields algorithm with significantly less ring excited by transients such as snare drum strike. To my ears, moorer2 rings less to transients than moorer2er7, moorer2er19. However, moorer2er7 and moorer2er19 have smoother decay than moorer2. Not sure if ringing is caused by an error in my implementation or by a comb-filter quality imposed by the early reflection pattern. Consider a diffusor other than the early reflection pattern. The following references contain detailed discussions of the non-proprietary implementations found in the code in reverb.c: + Schroeder, M.R. and Logan, B.F., "'Colorless' Artificial Reverberation." Journal of the Audio Engineering Society v. 9, n. 3: pp. 192-197, 1962 + Schroeder, M.R. , "Natural Sounding Artificial Reverberation." Journal of the Audio Engineering Society v. 10, n. 3: pp. 219-223, 1962 + Moorer, J.A., "About This Reverberation Business", Foundations of Computer Music, Roads and Strawn, ed.: pp. 605-639, 1985 + Chamberlin, Hal, Musical Applications of Microprocessors, 2nd Ed., Hayden Books, A Division of Howard Sams & Co., Indianapolis, Indiana, pp. 508-512, 1985 Manfred Schroeder's conditions for artificial reverberators (lifted from paper): 1) The frequency response must be flat when measured with narrow bands of noise, with the bandwidths corresponding to that of the transients in the sound to be reverberated. This condition is, of course, fulfilled by reverberators which have a flat response even for sinusoidal excitation. 2) The normal modes of the reverberator must overlap and cover the entire audio frequency range. 3) The reverberation times of the individual modes must be equal or nearly equal so that different frequency components of the sound will decay with equal rates. 4) The echo density a short interval after shock excitation must be high enough so that individual echos are not resolved by the ear. 5) The echo response must be free from periodicities (flutter echos) 6) The amplitude-frequency response must not exhibit any apparent periodicities. Periodic or comblike frequency responses produce an unpleasant hollow, reedy or metallic sound quality and give the impression that the sound is transmitted through a hollow tube or barrel.
Source
Documentation
Reference